package gui.nodes;

import gui.AbstractViewPane;
import gui.CalendrierProfUI;
import gui.EnseignantUIConsulter;
import gui.MainController;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.tree.DefaultMutableTreeNode;

import business.AnneeEtudeBL;
import business.EnseignantBL;

import utility.Record;

public class EnseignantNode extends AbstractLeaf {

	String enseignantName;
	int enseignantId;
	DefaultMutableTreeNode enseignantNode;
	AbstractNode parentNode;
	
	public EnseignantNode(AbstractNode parentNode, Record recordEnseignant) {
		this.parentNode = parentNode;
		
		//on recupere l'id du record associé au noeud (identifiant le noeud selectionné)
		this.enseignantId = recordEnseignant.getId();
		this.enseignantName = recordEnseignant.getLibelle();

	}

	@Override
	public JPopupMenu makePopup() {
		return new Popup();
	}

	@Override
	public String getNodeName() {
		return enseignantName;
	}

	public void loadPrimaryViewPane() {
		AbstractViewPane newViewPane = new CalendrierProfUI(enseignantId);
		MainController.getInstance().setViewPane(newViewPane);
		}	

	public void loadConsulterViewPane() {
		AbstractViewPane newViewPane = new EnseignantUIConsulter(parentNode, AbstractViewPane.ViewMode.CONSULTATION, enseignantId);
		MainController.getInstance().setViewPane(newViewPane);
		}
	
	public void loadModifierViewPane() {
		AbstractViewPane newViewPane = new EnseignantUIConsulter(parentNode, AbstractViewPane.ViewMode.MODIFICATION, enseignantId);
		MainController.getInstance().setViewPane(newViewPane);
		}
	public void loadSupprimerViewPane() {
		if (supprimer() == JOptionPane.YES_OPTION) {
			EnseignantBL ensBL = new EnseignantBL(enseignantId);
			ensBL.supprimerEnseignant();
		}
		((AbstractNode)parent).refresh();
		}

		private class Popup extends JPopupMenu implements ActionListener {
			JMenuItem consulter = new JMenuItem("Consulter les informations");
			JMenuItem modifier = new JMenuItem("Modifier");
			JMenuItem supprimer = new JMenuItem("Supprimer");

			public Popup() {
				consulter.addActionListener(this);
				modifier.addActionListener(this);
				supprimer.addActionListener(this);
				add(consulter);
				add(modifier);
				add(supprimer);
			}

			public void actionPerformed(ActionEvent e) {
				if (e.getSource() == consulter) {
					loadConsulterViewPane();
				}
				if (e.getSource() == modifier) {
					loadModifierViewPane();
				}
				if (e.getSource() == supprimer) {
					loadSupprimerViewPane();
				}

			}

		}
		public int supprimer() {
			return JOptionPane.showConfirmDialog(
				    null,
				    "Êtes vous sûr de vouloir supprimer l'enseignant\n"+
				    //ensBL.getName()+" "+ensBL.getPrenom()+
				    " ?",
				    "Avertissement",
				    JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
			
		}

}
